逐次処理からの脱出① 並行と並列
まとめ
並行処理
複数の動作が、論理的に、同時に起こり得るようにする処理
処理を「同時に進行させる」ことが目的
並列処理
複数の動作が、物理的に、同時に起こるようにする処理
処理を「速くこなすこと」が目的
並行処理とは
複数の動作が、論理的に、同時に起こり得るようにする処理
「複数処理をある時間範囲で同時に実行したい」という文脈で使われることが多い
1点の時間を見れば1つの仕事しかしてないが、複数の仕事を切り替えながら、一定範囲では同時にやってるように見える処理
並列処理とは
複数の動作が、物理的に、同時に起こるようにする処理
「速度向上」の文脈で使われることが多い
1点の時間を見ても、いつ見ても複数の仕事が物理的に同時に行われてる処理
並行処理に対する見方
処理速度向上ていう文脈ではなく、2つ以上の処理を同時に行いたいという要求を叶えるためのもの
結果的に同時に行うことで全体の処理時間が短くなるということもあり得るが...
それでも速度向上に重きを置いてるわけじゃない。あくまで「同時に実行したい」という要求に応えるもの
「同時に実行したい」の先の目的に処理速度向上がある場合もあるが、それはまた別の話。
並列処理に対する見方
これは完全に速度向上という文脈で見られることが多い
CPUコアを2つ以上使って、処理時間全体を短くしろって感じ
歴史
並列処理は割と最近できた概念
2005年にシングルコアの時代が終わり、マルチコアの時代になったことで生まれた
それまではCPUコア単体の速度が、天井知らずで上がってたのだが、、、
徐々に限界が近づいてきたことで、複数コア搭載のCPUが登場するようになった
並行処理はそれ以前からある考え方だと思われる
Windowsとかが2005年前から出ており、その時からマルチタスクはできてたと思うので...
ユーザーにとって、複数のタスクを同時にできるとめちゃストレスフリーになる
速度向上っていうよりは、そっち(同時実行)っていう面で使われてたことの方が多いと思われる
中には、IOバウンドなどの特性に気づいて、非同期処理を利用して速度向上を狙ってたものもいるかも
参考
並行と並列の違い - …Inertia(めちゃわかりやすい)
【小ネタ】並列処理とは何か?そして並列処理と並行処理の違いとは? - Qiita
並列処理 -入門 並列処理をCPUの歴史から理解- - fukuの犬小屋
並行処理と並列処理|Goでの並行処理を徹底解剖!
Pythonにおける並行・並列処理について調べてみた - okigaki_log
Selfs Ryo Com
【Python】並行処理再入門1 - 日々のあれこれφ(..)